﻿//using Coolzon.UI.Core.Runtime;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Runtime.InteropServices;
//using System.Text;
//using System.Threading.Tasks;

//namespace Coolzon.UI.Core
//{
//    public partial class Scene
//    {
//        /// <summary>
//        /// viewstate:area pos
//        /// </summary>
//        public const string VS_AREAPOS = "areapos";

//        /// <summary>
//        /// viewstate:horizontal loop offset
//        /// </summary>
//        public const string VS_LOOPH = "looph";

//        //public override void LoadViewState(ViewState viewState)
//        //{
//        //    PartState partState = viewState.GetPartState(this.XFullName);

//        //    if (partState != null)
//        //    {
//        //        #region load areapos
//        //        string areaposString = partState.GetString(VS_AREAPOS);
//        //        if (!string.IsNullOrEmpty(areaposString))
//        //        {
//        //            string[] areaposArr = areaposString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//        //            for (int index = 0; index < areaposArr.Length; index++)
//        //            {
//        //                string[] areaposSegments = areaposArr[index].Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);

//        //                for (int indexArea = 0; indexArea < this._subAreas.Count; indexArea++)
//        //                {
//        //                    Area areaPart = this._subAreas[indexArea];
//        //                    if (areaPart.Name == areaposSegments[0])
//        //                    {
//        //                        areaPart.Left = Common.Convertor.ToDouble(areaposSegments[1]);
//        //                        this.ChildrenPosInfo.Set(areaPart.Name, areaPart.Left);
//        //                        break;
//        //                    }
//        //                }
//        //            }
//        //        }
//        //        #endregion

//        //        #region load looph
//        //        string loopHString = partState.GetString(VS_LOOPH);
//        //        if (!string.IsNullOrEmpty(loopHString))
//        //        {
//        //            this.HorizontalLoop(Common.Convertor.ToDouble(loopHString));
//        //        }
//        //        #endregion
//        //    }

//        //    #region load sub part viewstate
//        //    for (int index = 0; index < this._partCollection.Count; index++)
//        //    {
//        //        this._partCollection[index].LoadViewState(viewState);
//        //    }
//        //    #endregion

//        //    base.LoadViewState(viewState);
//        //}

//        //public override void SaveViewState(ViewState viewState)
//        //{
//        //    PartState partState = viewState.GetPartState(this.XFullName);
//        //    if (partState == null)
//        //    {
//        //        partState = new PartState(this.XFullName);
//        //        viewState.AddPartState(partState);
//        //    }

//        //    #region save areapos
//        //    StringBuilder areaposBuilder = new StringBuilder();
//        //    for (int index = 0; index < this._subAreas.Count; index++)
//        //    {
//        //        Area areaPart = this._subAreas[index];
//        //        areaposBuilder.AppendFormat("{0}:{1},", areaPart.Name, areaPart.Left);
//        //    }
//        //    partState.SetString(VS_AREAPOS, areaposBuilder.ToString());
//        //    #endregion

//        //    #region save looph
//        //    partState.SetString(VS_LOOPH, this.CurrentHLoopOffset.ToString());
//        //    #endregion

//        //    #region save sub part viewstate
//        //    for (int index = 0; index < this._partCollection.Count; index++)
//        //    {
//        //        Part subPart = this._partCollection[index];
//        //        subPart.SaveViewState(viewState);
//        //    }
//        //    #endregion
//        //}

//        ///// <summary>
//        ///// 清楚视图状态
//        ///// </summary>
//        ///// <param name="viewState"></param>
//        //public void ResetViewState(ViewState viewState)
//        //{
//        //    viewState.RemovePartState(this.XFullName);

//        //    #region save sub part viewstate
//        //    for (int index = 0; index < this._partCollection.Count; index++)
//        //    {
//        //        Part subPart = this._partCollection[index];
//        //        IPartContainer subPartContainer = subPart as IPartContainer;
//        //        if (subPartContainer != null)
//        //        {
//        //            ResetSubViewState(viewState, subPart, subPartContainer);
//        //        }
//        //    }
//        //    #endregion
//        //}

//        ///// <summary>
//        ///// 清楚子组件的视图状态
//        ///// </summary>
//        ///// <param name="viewState"></param>
//        ///// <param name="subPart"></param>
//        ///// <param name="subPartContainer"></param>
//        //private void ResetSubViewState(ViewState viewState, Part subPart, IPartContainer subPartContainer)
//        //{
//        //    viewState.RemovePartState(subPart.XFullName);

//        //    #region save sub part viewstate
//        //    List<Part> nextSubPartList = subPartContainer.GetPartList();
//        //    for (int index = 0; index < nextSubPartList.Count; index++)
//        //    {
//        //        Part nextSubPart = nextSubPartList[index];
//        //        IPartContainer nextSubPartContainer = nextSubPart as IPartContainer;
//        //        if (nextSubPartContainer != null)
//        //        {
//        //            ResetSubViewState(viewState, nextSubPart, nextSubPartContainer);
//        //        }
//        //    }
//        //    #endregion
//        //}
//    }
//}
